import { config } from '@/config/env';
import { CreateArticleDto, UpdateArticleDto, QueryArticleDto, DeleteArticleDto, SelectOneArticleDto} from '@/dto/article.dto';
import { Article } from '@/entities/article.entity';
import articleRepository from '@/repositories/article.repository';


class ArticleService {

    /**
     * 创建
     * @param data  
     * @returns 
     */

    async add(data: CreateArticleDto) {
        // 检查邮箱是否已存在
        const findOne = await articleRepository.articleExists(data.title);
        if (findOne) {
            if (findOne.title == data.title) {
                throw new Error('标题已存在！');
            }

        }
        // 创建用户
        return articleRepository.create(data);
    }
    async update(data: UpdateArticleDto) {
          // 1. 检查分类是否存在
        const existingCategory = await articleRepository.findById(data.id );
        if (!existingCategory) {
            throw new Error("分类不存在")
        }

        
        const findOne = await articleRepository.findExcludeId(data);
        if (findOne) {
            if (findOne.title == data.title) {
                throw new Error('名称已存在！');
            }
 
        }
        // 创建用户
        return articleRepository.update(data);
    }

    async selectOne(reqData: SelectOneArticleDto) {
        return articleRepository.findById(reqData.id)


    }

    async selectList(reqData: QueryArticleDto) {
        return articleRepository.selectList(reqData)


    }
    async delete(reqData: DeleteArticleDto) {
        let res = await articleRepository.delete(reqData);
        if (!res) {
            throw new Error("id不存在，无删除记录！")
        }
        return res


    }

}

export default new ArticleService();